//
// Created by lqk on 2022/2/19.
//

#ifndef QUADCEREBELLUM_LEGSTRUCTS_H
#define QUADCEREBELLUM_LEGSTRUCTS_H

struct LegCommand{
    LegCommand(){Zero();}
    void Zero(){
        m_tauFeedforward.setZero();
        m_footForce.setZero();
        m_qDesired.setZero();
        m_qdDesired.setZero();
        m_footPosDesired.setZero();
        m_footVelDesired.setZero();
        m_kpCartesian.setZero();
        m_kdCartesian.setZero();
        m_kpJoints.setZero();
        m_kdJoints.setZero();
    }
    Eigen::Vector3f m_tauFeedforward,m_footForce,m_qDesired,m_qdDesired,m_footPosDesired,m_footVelDesired;
    Eigen::Matrix3f m_kpCartesian,m_kdCartesian,m_kpJoints,m_kdJoints;
};
struct LegState{
    LegState(){Zero();}
    void Zero(){
        m_q.setZero();
        m_qd.setZero();
        m_footPos.setZero();
        m_footVel.setZero();
        m_jacobian.setZero();
        m_tauEstimate.setZero();
    }
    Eigen::Vector3f m_q,m_qd,m_footPos,m_footVel;
    Eigen::Matrix3f m_jacobian;
    Eigen::Vector3f m_tauEstimate;

};

#endif //QUADCEREBELLUM_LEGSTRUCTS_H
